#ifndef CHARTSTYLE_HPP
#define CHARTSTYLE_HPP

/*! \file chartstyle.hpp
 *
 *  \brief Definicja klasy ChartStyle.
 *
 *  Plik zawiera definicję klasy ChartStyle
 *  Przechowuje charakterystykę stylu, oraz zawiera
 *  metody do obsługi cech krzywej.
 *
 *  \author Karol Kurpanik
 *  \date 2011.04.04
 *  \version 2.20.4
 */

#include<string>

using namespace std;

/*! \class ChartStyle
 *
 *  \brief Odpowiada za przechowywanie i obsługę stylu wykresu.
 *
 *  Klasa zawiera pola przechowujące parametry wykresu oraz
 *  metody odpowiedzialne ze ustawianie wartości tych pól.
 */
class ChartStyle
{
public:
    /*!
      * \brief Konstruktor klasy ChartStyle.
      *
      * Konstruktor ustawiający wszystkie atrybuty klasy
      * na domyślne wartości.
      * \post ChartStyle::_StyleID = 1,\n
      * ChartStyle::_LineType = "1", \n
      * ChartStyle::_LineColor = "1",\n
      * ChartStyle::_LineWidth = "1", \n
      * ChartStyle::_PointType = "1", \n
      * ChartStyle::_PointSize = "1", \n
      * ChartStyle::_PointInterval = "1".
      * \return void.
      */
    ChartStyle();
    /*!
     * \brief Konstruktor klasy ChartStyle, definiujący atrybuty.
     *
     * Konstruktor przypisujący atrybutom wartości przekazane przez
     * parametry.
     * \param id numer ID stylu - dowolna liczba większa od zera,
     * \param lt rodzaj linii - liczba naturalna w postaci napisu string,
     * \param lc kolor linii - liczba naturalna w postaci napisu string,
     * \param lw szerokość linii - liczba naturalna w postaci napisu string,
     * \param pt rodzaj punktu - liczba naturalna w postaci napisu string,
     * \param ps rozmiar punktu - liczba naturalna w postaci napisu string,
     * \param pi interwał punktu - liczba naturalna w postaci napisu string.
     * \post ChartStyle::_StyleID = id,\n
     * ChartStyle::_LineType = lt, \n
     * ChartStyle::_LineColor = lc,\n
     * ChartStyle::_LineWidth = lw, \n
     * ChartStyle::_PointType = pt, \n
     * ChartStyle::_PointSize = ps, \n
     * ChartStyle::_PointInterval = pi.
     * \return void.
     */
    ChartStyle(int id, string lt, string lc, string lw,
               string pt, string ps, string pi);
    /*!
     * \brief Metoda przypisująca atrybutom odpowiednie wartości.
     *
     * Metoda definiująca wartości atrybutów przekazane przez
     * parametry.
     * \param id numer ID stylu - dowolna liczba większa od zera,
     * \param lt rodzaj linii - liczba naturalna w postaci napisu string,
     * \param lc kolor linii - liczba naturalna w postaci napisu string,
     * \param lw szerokość linii - liczba naturalna w postaci napisu string,
     * \param pt rodzaj punktu - liczba naturalna w postaci napisu string,
     * \param ps rozmiar punktu - liczba naturalna w postaci napisu string,
     * \param pi interwał punktu - liczba naturalna w postaci napisu string.
     * \post ChartStyle::_StyleID = id,\n
     * ChartStyle::_LineType = lt, \n
     * ChartStyle::_LineColor = lc,\n
     * ChartStyle::_LineWidth = lw, \n
     * ChartStyle::_PointType = pt, \n
     * ChartStyle::_PointSize = ps, \n
     * ChartStyle::_PointInterval = pi.
     * \return void.
     */
    inline void setStyle(int id, string lt, string lc, string lw,
                         string pt, string ps, string pi);

    /*!
     * \brief Numer ID stylu.
     *
     * Pole przechowujące kolejny numer porządkowy zdefiniowanego stylu.
     */
    int _StyleID;
    /*!
     * \brief Rodzaj linii.
     *
     * Pole przechowujące rodzaj linii, w większości przypadku przyjmuje wartość "1".
     */
    string _LineType;
    /*!
     * \brief Kolor linii.
     *
     * Pole przechowujące kolor linii, może zawierać wartości typu string odpowiadające
     * liczbom całkowitym z przedziału 1-7.
     */
    string _LineColor;
    /*!
     * \brief Szerokość linii.
     *
     * Pole przechowujące szerokość linii, może zawierać wartości typu string odpowiadające
     * liczbom całkowitym z przedziału 1-6.
     */
    string _LineWidth;
    /*!
     * \brief Rodzaj punktu.
     *
     * Pole przechowujące rodzaj punktu, może zawierać wartości typu string odpowiadające
     * liczbom całkowitym z przedziału 1-13.
     */
    string _PointType;
    /*!
     * \brief Rozmiar punktu.
     *
     * Pole przechowujące rozmiar punktu, może zawierać wartości typu string odpowiadające
     * liczbom całkowitym z przedziału 1-6.
     */
    string _PointSize;
    /*!
     * \brief Interwał punktu.
     *
     * Pole przechowujące interwał punktu, czyli odległość między kolejnymi punktami na
     * wykresie, w większości przypadków przyjmuje domyślną wartość "1".
     */
    string _PointInterval;
};

#endif // CHARTSTYLE_HPP
